import Vue from 'vue/dist/vue.min.js'
import VueRouter from 'vue-router'
import { getLoginToken, getLoginExpire, getRefreshLoginToken } from '@/utils'

Vue.use(VueRouter)

import layout from '@/view/layout/layout.vue'

const _routes = [
	{
		path        : '/login',
		name        : 'login',
		meta        : {title : '登录', keepAlive : false},
		component   : () => import('@/view/login.vue')
	}
]

const _asyncRoutes = [
	/* {
		path        : '/',
		name        : 'index',
		meta        : {title : '首页', keepAlive : true},
		icon        : '',
		component   : () => import('@/view/index/index.vue')
	}, */
	
	{
		path        : '/setup',
		name        : 'setup',
		hidden      : true,
		meta        : {title : '设置', keepAlive : false},
		component   : layout,
		children    : [
			{path : 'aboutus', name : 'aboutus', meta : {title : '关于我们', keepAlive : false}, component : () => import('@/view/setup/aboutus.vue')},
			{path : 'userinfo', name : 'userinfo', meta : {title : '管理员信息', keepAlive : false}, component : () => import('@/view/setup/userInfo.vue')}
		]
	},
	
	
	{
		path        : '/device',
		name        : 'device',
		meta        : {title : '设备管理', keepAlive : false},
		icon        : '',
		component   : layout,
		children : [
			{path : '', name : 'deviceList', meta : {title : '设备列表', keepAlive : true}, component : () => import('@/view/device/index.vue')},
			{path : 'detail/:deviceId', name : 'deviceDetail', meta : {title : '设备详情'}, component : () => import('@/view/device/device.vue'), hidden : true},
			{path : 'add', name : 'addDevice', meta : {title : '新增设备'}, component : () => import('@/view/device/add.vue'), hidden : true},
			{path : 'edit/:deviceId', name : 'editDevice', meta : {title : '编辑设备'}, component : () => import('@/view/device/add.vue'), hidden : true},
			{path : 'deviceType', name : 'deviceType', meta : {title : '设备类型'}, component : () => import('@/view/device/deviceType.vue'), hidden : true}
		]
	},
	
	{
		path        : '/price',
		name        : 'price',
		meta        : {title : '价格管理', keepAlive : false},
		icon        : '',
		component   : layout,
		children : [
			{path : '', name : 'priceList', meta : {title : '价格管理', keepAlive : true, role : ['admin', 'agent']}, component : () => import('@/view/price/index.vue')},
			{path : 'add', name : 'addPrice', meta : {title : '新增价格套餐'}, component : () => import('@/view/price/add.vue'), hidden : true},
			{path : 'edit/:priceId', name : 'editPrice', meta : {title : '编辑价格套餐'}, component : () => import('@/view/price/add.vue'), hidden : true}
			
		]
	},
	
	{
		path        : '/agent',
		name        : 'agent',
		meta        : {title : '代理商', role : ['admin']},
		icon        : '',
		component   : layout,
		children : [
			{path : '', name : 'agentList', meta : {title : '代理商列表', keepAlive : true}, component : () => import('@/view/agent/index.vue')},
			{path : 'add', name : 'addAgent', meta : {title : '新增代理商'}, component : () => import('@/view/agent/add.vue'), hidden : true},
			{path : 'edit/:agentId', name : 'editAgent', meta : {title : '编辑代理商'}, component : () => import('@/view/agent/add.vue'), hidden : true}
		]
	},
	
	{
		path        : '/store',
		name        : 'store',
		meta        : {title : '门店', role : ['admin', 'agent']},
		icon        : '',
		component   : layout,
		children : [
			{path : '', name : 'storeList', meta : {title : '门店列表', keepAlive : true}, component : () => import('@/view/store/index.vue')},
			{path : 'add', name : 'addStore', meta : {title : '新增门店'}, component : () => import('@/view/store/add.vue'), hidden : true},
			{path : 'edit/:storeId', name : 'editStore', meta : {title : '编辑门店'}, component : () => import('@/view/store/add.vue'), hidden : true}
		]
	},
	
	{
		path        : '/user',
		name        : 'user',
		meta        : {title : '用户管理', role : ['admin']},
		icon        : '',
		component   : layout,
		children : [
			{path : '', name : 'userList', meta : {title : '用户列表'}, component : () => import('@/view/user/index.vue')},
			{path : 'order/:userId', name : 'userOrderList', meta : {title : ''}, component : () => import('@/view/user/order.vue'), hidden : true},
			{path : 'balance/:userId', name : 'userBalance', meta : {title : ''}, component : () => import('@/view/user/balance.vue'), hidden : true}
		]
	},
	
	{
		path        : '/order',
		name        : 'order',
		meta        : {title : '充电订单管理', keepAlive : true},
		icon        : '',
		component   : layout,
		children : [
			{path : 'charge', name : 'charge', meta : {title : '扫码充电', keepAlive : true}, component : () => import('@/view/order/charge.vue')},
			{path : 'chargeDetail/:orderId', name : 'chargeDetail', meta : {title : '充电订单详情', keepAlive : true}, component : () => import('@/view/order/chargeDetail.vue'), hidden : true},
			{path : 'onlinecardCharge', name : 'onlinecardCharge', meta : {title : '线上卡', keepAlive : true}, component : () => import('@/view/order/cardCharge.vue')}
		]
	},
	
	{
		path        : '/finance',
		name        : 'finance',
		meta        : {title : '财务', keepAlive : true},
		icon        : '',
		component   : layout,
		children : [
			{path : 'dayIncome', name : 'dayIncome', meta : {title : '每日收益', keepAlive : true}, component : () => import('@/view/finance/dayIncome.vue')},
			{path : 'chargeDetail/:orderId', name : 'chargeDetail', meta : {title : '充电订单详情', keepAlive : true}, component : () => import('@/view/order/chargeDetail.vue'), hidden : true},
			{path : 'onlinecardCharge', name : 'onlinecardCharge', meta : {title : '线上卡', keepAlive : true}, component : () => import('@/view/order/cardCharge.vue')}
		]
	},
	
	{
		path        : '/programupgrade',
		name        : 'programUpgrade',
		meta        : {title : '远程升级', role : ['admin']},
		icon        : '',
		component   : layout,
		children : [
			{path : '', name : 'programList', meta : {title : '升级包'}, component : () => import('@/view/programUpgrade/index.vue')},
			{path : 'upgrade', name : 'upgrade', meta : {title : '升级设备'}, component : () => import('@/view/programUpgrade/upgrade.vue'), hidden : true},
			{path : 'log', name : 'upgradeLog', meta : {title : '升级记录'}, component : () => import('@/view/programUpgrade/log.vue')}
		]
	}
]

let _menu = []
let _cacheView = []

_asyncRoutes.forEach(router => {
	
	_routes.push(router)
	
	/* if(router.hidden) return
	
	let menu = {
		path : router.path,
		name : router.name,
		title : router.meta.title,
		icon : router.icon,
		children : []
	}
	
	if(router.children && router.children.length > 0){
		router.children.forEach((v, i) => {
			if(v.hidden !== true){
				if(i == 0){
					_cacheView.push(v.name)
				}
				menu.children.push({
					path : v.path,
					name : v.name,
					title : v.meta.title
				})
			}
		})
	}
	
	if(menu.children.length == 0){
		delete menu.children
	}
	
	_menu.push(menu) */
	
})

const router = new VueRouter({
	//mode: 'history',
	routes : _routes
})


router.beforeEach((to, from, next) => {
	if(to.name != 'login'){
		// if(!getLoginToken()){
		// 	next({path : '/login'})
		// 	return
		// }
		//getLoginExpire, getRefreshLoginToken
		let date = new Date()
		if(date.getTime() >= getLoginExpire()){
			//next({path : '/login'})
			//return
		}
	}
	
	next()
})

export let menuRouter = _asyncRoutes

export let cacheView = ['device', 'deviceList']

export default router